﻿function getCtrlBoxPanel() {
	var panel = new Ext.Panel({
				height : 147,
				layout : 'fit',
				region : 'south',
				split : true
			});

	function makePanel() {
		return new Ext.Panel({
					border : false,
					autoScroll : true,
					bodyStyle : 'text-align:center',
					bodyCssClass : 'ctrlbox',
					layout : 'table',
					layoutConfig : {
						columns : 2
					}
				});
	}

	function makeBtns() {
		return {
			login : new Ext.Button({
						text : '<pre> 登　录 </pre>',
						iconCls : 'login-image',
						scale : 'large',
						handler : function() {
							showLogin();
						}
					}),
			reg : new Ext.Button({
						text : '<pre>校外注册</pre>',
						iconCls : 'reg-image',
						scale : 'large',
						disabled : !sys.settings.openOutsideReg,
						handler : function() {
							showReg();
						}
					}),
			status : new Ext.Button({
						text : '<pre>在线状态</pre>',
						iconCls : 'status-image',
						scale : 'large',
						handler : function() {
							showStatusList();
						}
					}),
			ranklist : new Ext.Button({
						text : '<pre> 排　名 </pre>',
						iconCls : 'ranklist-image',
						scale : 'large',
						handler : function() {
							showRanklist();
						}
					}),
			contest : new Ext.Button({
						text : '<pre> 比　赛 </pre>',
						iconCls : 'contest-image',
						scale : 'large',
						disabled : true
					}),
			// help : new Ext.Button({
			// text : '<pre> 帮 助 </pre>',
			// iconCls : 'help-image',
			// scale : 'large',
			// disabled : true
			// }),
			datastruct : new Ext.Button({
						text : '<pre>数据结构</pre>',
						iconCls : 'book-image',
						scale : 'large',
						handler : function() {
							gotoDS();
						}
					}),
			userinfo : new Ext.Button({
						text : '<pre>我的资料</pre>',
						iconCls : 'userinfo-image',
						scale : 'large',
						handler : function() {
							showUser(sys.user.username);
						}
					}),
			logout : new Ext.Button({
						text : '<pre> 注　销 </pre>',
						iconCls : 'logout-image',
						scale : 'large',
						handler : function() {
							doLogout();
						}
					}),
			editinfo : new Ext.Button({
						text : '<pre>修改资料</pre>',
						iconCls : 'editinfo-image',
						scale : 'large',
						handler : function() {
							editUser(sys.user.username);
						}
					}),
			editpsw : new Ext.Button({
						text : '<pre>更改密码</pre>',
						iconCls : 'password-image',
						scale : 'large',
						handler : function() {
							editPassword(sys.user.username);
						}
					}),
			mystatus : new Ext.Button({
						text : '<pre>我的提交</pre>',
						iconCls : 'mysubmit-image',
						scale : 'large',
						handler : function() {
							showStatusList({
										username : sys.user.username
									});
						}
					}),
			mystatistics : new Ext.Button({
						text : '<pre>我的统计</pre>',
						iconCls : 'statistics-image',
						scale : 'large',
						handler : function() {
							showUserStatistics(sys.user.username);
						}
					}),
			backup : new Ext.Button({
						text : '<pre>备份代码</pre>',
						iconCls : 'backup-image',
						scale : 'large',
						handler : function() {
							backupCode(sys.user.username);
						}
					}),
			mailbox : new Ext.Button({
						text : '<pre> 信　箱 </pre>',
						iconCls : 'mail-image',
						scale : 'large',
						handler : function() {
							showMsgBox(sys.user.username);
						}
					}),
			god : new Ext.Button({
						text : '<pre>管理模式</pre>',
						iconCls : 'god-image',
						scale : 'large',
						handler : function() {
							becomeGod();
						}
					}),
			ungod : new Ext.Button({
						text : '<pre>普通模式</pre>',
						iconCls : 'ungod-image',
						scale : 'large',
						handler : function() {
							becomeUnGod();
						}
					}),
			settings : new Ext.Button({
						text : '<pre>系统设置</pre>',
						iconCls : 'settings-image',
						scale : 'large',
						handler : function() {
							editSettings();
						}
					}),
			userlist : new Ext.Button({
						text : '<pre>用户管理</pre>',
						iconCls : 'userlist-image',
						scale : 'large',
						handler : function() {
							showUserList();
						}
					}),
			onlinejudge : new Ext.Button({
						text : '<pre>OJ</pre>',
						iconCls : 'onlinejudge-image',
						scale : 'large',
						handler : function(){
							gotoACM();
						}
			})
		};
	}

	onUpdate();
	panel.updateButtons = onUpdate;
	return panel;

	function onUpdate() {
		panel.removeAll(true);
		var newpanel = makePanel();
		var btnset = makeBtns();
		if(sys.dataStruct == false){
			if (sys.guest)
				newpanel.add([btnset.login, btnset.reg, btnset.status, btnset.ranklist, btnset.contest,
						btnset.datastruct]);
			else {
				newpanel.add([btnset.userinfo, btnset.logout, btnset.editinfo, btnset.editpsw,
						btnset.status, btnset.mystatus, btnset.ranklist, btnset.mystatistics,
						btnset.backup, btnset.mailbox]);
				if (sys.god)
					newpanel.add([btnset.ungod, btnset.settings, btnset.userlist]);
				else if (sys.user.admin) newpanel.add(btnset.god);
				newpanel.add([btnset.datastruct]);
			}
		}
		else{
			if(sys.guest)
			newpanel.add([btnset.login,btnset.onlinejudge]);
			else {
				newpanel.add([btnset.userinfo,btnset.logout,btnset.editinfo,btnset.editpsw,btnset.mailbox,btnset.onlinejudge]);
				if(sys.god || sys.teacher)
				newpanel.add([btnset.ungod,btnset.settings, btnset.userlist]);
				else if(sys.user.admin) newpanel.add(btnset.god);
			}
		}
		panel.add(newpanel);
		if (sys.guest)
			panel.setHeight(147);
		else if (window.screen.height <= 600)
			panel.setHeight(195);
		else
			panel.setHeight(Math.ceil(newpanel.items.length / 2) * 49 - 4);
		panel.doLayout();
		if (panel.ownerCt) panel.ownerCt.doLayout();
	}
}

function refreshCtrlBox() {
	var panel = ui.ctrlBox;
	panel.updateButtons();
}

function doLogout() {
	if (sys.guest) return;
	confirmx('您确定要注销吗？<br />' + '注销后页面会被重新刷新。', function() {
				ajax({
							url : url.doLogout,
							success : function() {
								location.reload();
							}
						});
			});
}

function becomeGod() {
	if (sys.guest || !sys.user.admin) return;
	confirmx('您确定要启用管理模式吗？<br />' + '启用管理模式后，将可对系统进行管理，<br />' + '但您所提交的代码都不会被统计和显示，<br />'
					+ '启用后页面会被重新刷新。', function() {
				ajax({
							url : url.becomeGod,
							success : function() {
								// alert("不是你们拣选了我，是我拣选了你们，并且分派你们去结果子，"
								// + "叫你们的果子常存。使你们奉我的名，无论向父求什么，他就赐给你们。\n" + ' ——
								// 约翰福音 15:16');
								location.reload();
							}
						});
			});
}
function gotoACM(){
	ajax({
			url : url.gotoACM,
			success : function(){
				location.reload();
			}
	})
}
function gotoDS(){
	ajax({
			url : url.gotoDataStruct
	})
}
function becomeUnGod() {
	if (sys.guest || !sys.user.admin) return;
	confirmx('您确定要换回普通模式吗？<br />' + '普通模式权限与普通用户一样，<br />' + '换回后页面会被重新刷新。', function() {
				ajax({
							url : url.becomeUnGod,
							success : function() {
								location.reload();
							}
						});
			});
}
